Currently, redundant arrays of inexpensive disk (RAID) arrays are the principle storage architecture for large, networked computer storage systems. RAID architecture was first documented in 1987 when Patterson, Gibson, and Katz published a paper entitled, “A Case for Redundant Arrays of Inexpensive Disks (RAID)” (University of California, Berkeley). Fundamentally, RAID architecture combines multiple small, inexpensive disk drives into an array of disk drives that yields performance exceeding that of a Single Large Expensive Drive (SLED). Additionally, the array of drives appears as a single logical storage unit (LSU) or drive. Five types of array architectures, designated as RAID-1 through RAID-5, were defined by the Berkeley paper, each type providing disk fault-tolerance and offering different trade-offs in features and performance. In addition to the five redundant array architectures, a non-redundant array of disk drives is referred to as a RAID-0 array. RAID controllers provide data integrity through redundant data mechanisms, high speed through streamlined algorithms, and accessibility to stored data for users and administrators.
A networking technique that is fundamental to the various RAID levels is “striping,” a method of concatenating multiple drives into one logical storage unit. Striping involves partitioning each drive's storage space into stripes, which may be as small as one sector (512 bytes) or as large as several megabytes. These stripes are then interleaved in round-robin style, so that the combined space is composed alternately of stripes from each drive. In effect, the storage space of the drives is shuffled like a deck of cards. The type of application environment, I/O or data intensive, determines whether large or small stripes should be used. The choice of stripe size is application dependant and affects the real-time performance of data acquisition and storage in mass storage networks. In data intensive environments and single-user systems which access large records, small stripes (typically one 512-byte sector in length) can be used, so that each record will span across all the drives in the array, each drive storing part of the data from the record. This causes long record accesses to be performed faster, because the data transfer occurs in parallel on multiple drives. Applications such as on-demand video/audio, medical imaging, and data acquisition, which utilize long record accesses, will achieve optimum performance with small stripe arrays.
FIG. 1 is a block diagram of a conventional networked storage system 100. Conventional networked storage system 100 includes a plurality of hosts 110A through 110N, where “N” is not representative of any other value “N” described herein. Hosts 110A through 110N are connected to a communications means 120 that is further coupled via host ports to a plurality of RAID controllers 130A, and 130B through 130N, where “N” is not representative of any other value “N” described herein. RAID controllers 130A through 130N are connected through device ports to a second communication means 140, which is further coupled to a plurality of memory devices 150A through 150N, wherein “N” is not representative of any other value “N” described herein.
Hosts 110A through 110N are representative of any computer systems or terminals that are capable of communicating over a network. Communication means 120 is representative of any type of electronic network that uses a protocol, such as Ethernet. RAID controllers 130A through 130N are representative of any storage controller devices that process commands from hosts 110A through 110N and, based on those commands, control memory devices 150A through 150N. RAID controllers 130A through 130N also provide data redundancy, based on system administrator programmed RAID levels. Redundancy methods include data mirroring, parity generation, and/or data regeneration from parity after a device failure. Communication means 140 is any type of storage controller network, such as iSCSI or fibre channel. Memory devices 150A through 150N may be any type of storage device, such as, for example, tape drives, disk drives, non-volatile memory, or solid state devices. Although most RAID architectures use disk drives as the main storage devices, it should be clear to one skilled in the art that the invention embodiments described herein apply to any type of memory devices.
In operation, host 110A, for example, generates a read or a write request for a specific volume (e.g., volume 1), to which it has been assigned access rights. The request is sent through communication means 120 to the host ports of RAID controllers 130A through 130N. The command is stored in local cache in RAID controller 130B, for example, because RAID controller 130B is programmed to respond to any commands that request volume 1 access. RAID controller 130B processes the request from host 110A and determines, from mapping tables, the first physical memory device 150A through 150N address from which to read data or to write new data. If volume 1 is a RAID 5 volume and the command is a write request, RAID controller 130B generates new parity, stores the new parity to a parity memory device 150A through 150N via communication means 140, sends a “done” signal to host 110A via communication means 120, and writes the new host 110A data through communication means 140 to corresponding memory devices 150A through 150N. As a result, data is less susceptible to loss from memory device 150A through 150N failures and, generally, can be restored from parity and/or functional memory devices 150A through 150N, in the event of a failure. Any one of RAID controllers 130A through 130N also have the ability to take over control for a failed RAID controller 130A through 130N, such that system performance is unaffected or the effects are limited.
The operation of most standard RAID controllers is set at the Application Programming Interface (API) level. Typically, Original Equipment Manufactures (OEMs) bundle RAID networks and sell these memory systems to end users for network storage. OEMs bear the burden of customization of a RAID network and tune the network performance through an API. However, the degree to which a RAID system can be optimized through the API is limited; API does not adequately handle the unique performance requirements of various dissimilar data storage applications. Additionally, API does not provide an easily modifiable and secure format for proprietary OEM RAID configurations.
There is, therefore, a need for a RAID controller that has the capability to be adequately programmed for unique performance and data storage requirements. Furthermore, the RAID controller configuration should be easily modifiable by a user or system administrator. The general functions of the RAID controller, such as volume allocation, should be optimized to use fewer processing resources, in order to increase overall system performance. Finally, the RAID controller needs to allocate physical storage space to logical volumes in such a way that the majority of the storage capacity is utilized.
An example RAID controller with a mapping function for allocating physical disk space to logical volumes is described in U.S. Patent Application Publication No. 2003/0028727. The '727 application, entitled, “RAID Apparatus for Storing a Plurality of Same Logical Volumes on Different Disk Units,” describes a RAID apparatus that has a plurality of same logical volumes allocated on a real volume. The real volume is designed so that a plurality of same logical volumes are respectively allocated on different physical disk units and a combination of a plurality of logical volumes allocated on each physical disk unit differs from one physical disk unit to another. This structure prevents uneven loading on the real volume from occurring because of uneven loads on the logical volumes.
The '727 application identifies the problem of physical disk device load balancing in a RAID architecture and offers a solution: allocating physical disk space such that equivalent logical volumes reside on separate physical disks for load balancing optimization. However, the '727 application fails to provide an effective means to allocate volumes to physical storage devices, such that there is greater flexibility in system design. Furthermore, the '727 application does not provide a means for mapping logical volumes to physical storage space with fewer processing cycle requirements. Finally, the '727 application does not provide a means for utilizing a greater amount of available space of each storage device, as compared to conventional methods.
It is therefore an object of this invention to provide a system and method for assigning physical storage space in a RAID array, such that maximum system flexibility is available to the administrator(s).
It is another object of the invention to provide a system and method for assigning physical storage space in a RAID array, such that fewer processing cycles are needed to maintain mapping information when a new volume is created.
It is yet another object of this invention to provide a system and method for assigning physical storage space in a RAID array, such that more data storage capacity is available.